package com.qf.service.impl;

import com.qf.dao.ProductDao;
import com.qf.dao.impl.ProductDaoImpl;
import com.qf.pojo.PageBean;
import com.qf.pojo.Product;
import com.qf.service.ProductService;

import java.sql.SQLException;
import java.util.List;

/**
 * @author 高圆圆
 * @date 2023/4/23 14:34
 * 针对商品的业务接口实现
 */
public class ProductServiceImpl  implements ProductService {

    /**
     * 获取最新商品
     * @return 返回商品列表
     */
    @Override
    public List<Product> getNewProducts() {
        try {
            ProductDao productDao = new ProductDaoImpl() ;
            List<Product> products = productDao.selectNewProducts();
            if(products!=null || products.size()>0){
                return  products ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 获取热门商品
     * @return 返回指定的商品列表
     */
    @Override
    public List<Product> getHotProdcuts() {
        try {
            ProductDao productDao = new ProductDaoImpl() ;
            List<Product> products = productDao.selectHotProducts();
            if(products!=null || products.size()>0){
                return products ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }


    /**
     * 根据商品编号获取商品实体
     * @param pid 商品编号
     * @return 返回商品实体
     */
    @Override
    public Product getProduct(String pid) {
        try {
            //调用商品的数据访问接口
            ProductDao productDao = new ProductDaoImpl() ;
            Product product = productDao.selectProductByPid(pid) ;
            if(product!=null){
                return product ;
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    @Override
    public PageBean<Product> getProductsByPage(int currentPage, int pageSize, String cid) {
        List<Product> list = null;
        try {
            //访问数据接口
            ProductDao productDao = new ProductDaoImpl() ;
            //起始索引
            int start = (currentPage-1)*pageSize ;
            list = productDao.selectProductByPage(start, pageSize, cid);
            //以后将list第一次查询出来----存储在"redis" (no sql数据库) key:value键值对
            int totalCount = productDao.totalCount(cid);
            if(list!=null || list.size()>0){
                return new PageBean<>(currentPage,pageSize,totalCount,list);
            }


        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return  null ;

    }
}
